# -*- coding: utf-8 -*-
"""
Created on Sun Mar 21 20:15:20 2021

@author: hp
"""

import numpy as np;
import pandas as pd;

input_data = "D:/PythonWord/3/Apriori/data/ap.xlsx";
data = pd.read_excel(input_data, header = 0, index_col=0);
print(data);
import pandas as pd
import numpy as np
outputfile = 'apriori_rules.xlsx' #结果文件
#2、一对一关联分析
c=list(data.columns) #获取字段名称，并转化为列表
support_min=0.2 #最小支持度
conf_min=0.1 #最小置信度
R=pd.DataFrame(columns=['规则','支持度','置信度'])
for q in range(len(c)):#规则的前件为c[k]
    for h in range(len(c)):#规则的后件为c[q]
        if c[q]!=c[h]: #要求前件和后件不相等
            support_num=((data[c[q]]==1)&(data[c[h]]==1)).sum()#支持数
            support=support_num/len(data)#支持度
            if support>=support_min: #支持度大于等于最小支持度
                conf=support_num/(data[c[q]].sum())#置信度
                if  conf>=conf_min:#置信度大于等于最小置信度的规则
                    s=pd.Series([c[q]+'-->'+c[h],support,conf],index=['规则','支持度','置信度'])
                    R=R.append(s,ignore_index=True)
print(R)
R.to_excel(outputfile)#将结果导出到Excel
print('分析结束');

#%%
import pandas as pd
from apriori import * #导入自行编写的apriori函数

inputfile = 'tr_1.xlsx'
outputfile = 'apriori_rules.xlsx' #结果文件
data = pd.read_excel(inputfile, header=0,index_col=0)

support = 0.2 #最小支持度
confidence = 0.5 #最小置信度
ms = '-->' #连接符，默认'--'，用来区分不同元素，如A--B。需要保证原始表格中不含有该字符
find_rule(data, support, confidence, ms).to_excel(outputfile) #保存结果